Micron Document
Livres et Wikis | Archives | Info


Intel C++ Compiler
layout: Wide ยท Narrow ยท Centered
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
top
Intel oneAPI DPC++/C++ Compiler and Intel C++ Compiler Classic (deprecated icc and iclcite-ref-3[3] is in Intel OneAPI HPC toolkit) are Intelโ€™s C, C++, SYCL, and Data Parallel C++ (DPC++) compilers for Intel processor-based systems, available for Windows, Linux, and macOS operating systems.cite-ref-4[4]

Contents

โ€ข Overview
โ€ข Architectures
โ€ข Toolkits
โ€ข Debugging
โ€ข See also
โ€ข References

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

Overview

Intel oneAPI DPC++/C++ Compiler is available for Windows and Linux and supports compiling C, C++, SYCL, and Data Parallel C++ (DPC++) source, targeting Intel IA-32, Intel 64 (aka x86-64), Core, Xeon, and Xeon Scalable processors, as well as GPUs including Intel Processor Graphics Gen9 and above, Intel Xe architecture, and Intel Programmable Acceleration Card with Intel Arria 10 GX FPGA.cite-ref-intel-5-0[5] Like Intel C++ Compiler Classic, it also supports the Microsoft Visual Studio and Eclipse IDE development environments, and supports threading via Intel oneAPI Threading Building Blocks, OpenMP, and native threads.

DPC++cite-ref-6[6]cite-ref-7[7] builds on the SYCL specification from The Khronos Group. It is designed to allow developers to reuse code across hardware targets (CPUs and accelerators such as GPUs and FPGAs) and perform custom tuning for a specific accelerator. DPC++ comprises C++17 and SYCL language features and incorporates open-source community extensions that make SYCL easier to use. Many of these extensions were adopted by the SYCL 2020 provisional specificationcite-ref-8[8] including unified shared memory, group algorithms, and sub-groups.

Intel announced in August 2021 the complete adoption of LLVM for faster build times and benefits from supporting the latest C++ standards.cite-ref-9[9]

Intel C++ Compiler Classic is available for Windows, Linux, and macOS and supports compiling C and C++ source, targeting Intel IA-32, Intel 64 (x86-64), Core, Xeon, and Xeon Scalable processors.cite-ref-intel-5-1[5] It supports the Microsoft Visual Studio and Eclipse IDE development environments. Intel C++ Compiler Classic supports threading via Intel oneAPI Threading Building Blocks, OpenMP, and native threads.

Architectures

According to Intel,cite-ref-intel-10-0[10] starting with the 2023.0 release, Intel oneAPI DPC++/C++ Compiler supports all current Intel general-purpose x86-64 CPUs and GPUs including:

โ€ข Processors:

โ€ข Legacy Intel IA-32 and Intel 64 (x86-64) processors
โ€ข Intel Core processors
โ€ข Intel Xeon processor family
โ€ข Intel Xeon Scalable processors
โ€ข Intel Xeon Processor Max Series

โ€ข GPUs:

โ€ข Intel Processor Graphics Gen9 and above
โ€ข Intel Xe architecture
โ€ข Intel Programmable Acceleration Card with Intel 10 GX FPGA
โ€ข Intel Data Center GPUs including Flex Series and Max Series

โ€ข Intel FPGAs

Intel C++ Compiler Classic targets general-purpose Intel x86-64 architecture CPUs including:cite-ref-intel-5-2[5]

โ€ข Legacy Intel IA-32 and Intel 64 (x86-64) processors
โ€ข Intel Core processors
โ€ข Intel Xeon processor family
โ€ข Intel Xeon Scalable processors

Toolkits

The Intel oneAPI DPC++/C++ Compiler is available either as a standalone componentcite-ref-11[11] or as part of the Intel oneAPI Base Toolkit, Intel oneAPI HPC Toolkit, and Intel oneAPI IoT Toolkit.cite-ref-intel-5-3[5]

The Intel C++ Compiler Classic is available either as a standalone componentcite-ref-12[12] or as part of the Intel oneAPI Base Toolkit.cite-ref-intel-5-4[5]

Debugging

The Intel compiler provides debugging information that is standard for the common debuggers (DWARF 2 on Linux, similar to gdb, and COFF for Windows). The flags to compile with debugging information are /Zi on Windows and -g on Linux. Debugging is done on Windows using the Visual Studio debugger and, on Linux, using gdb.

While the Intel compiler can generate a gprof compatible profiling output, Intel also provides a kernel level, system-wide statistical profiler called Intel VTune Profiler. VTune can be used from a command line or through an included GUI on Linux or Windows. It can also be integrated into Visual Studio on Windows, or Eclipse on Linux). In addition to the VTune profiler, there is Intel Advisor that specializes in vectorization optimization, offload modeling, flow graph design and tools for threading design and prototyping.

Intel also offers a tool for memory and threading error detection called Intel Inspector XE. Regarding memory errors, it helps detect memory leaks, memory corruption, allocation/de-allocation of API mismatches and inconsistent memory API usage. Regarding threading errors, it helps detect data races (both heap and stack), deadlocks and thread and synch API errors.

Support for non-Intel processors

Previous versions of Intelโ€™s C/C++ compilers have been criticized for optimizing less aggressively for non-Intel processors; for example, Steve Westfield wrote in a 2005 article at the AMD website:cite-ref-13[13]

Intel 8.1 C/C++ compiler uses the flag -xN (for Linux) or -QxN (for Windows) to take advantage of the SSE2 extensions. For SSE3, the compiler switch is -xP (for Linux) and -QxP (for Windows). ... With the -xN/-QxN and -xP/-QxP flags set, it checks the processor vendor stringโ€”and if it's not "GenuineIntel", it stops execution without even checking the feature flags. Ouch!

The Danish developer and scholar Agner Fog wrote in 2009:cite-ref-agner-blog-14-0[14]

The Intel compiler and several different Intel function libraries have suboptimal performance on AMD and VIA processors. The reason is that the compiler or library can make multiple versions of a piece of code, each optimized for a certain processor and instruction set, for example SSE2, SSE3, etc. The system includes a function that detects which type of CPU it is running on and chooses the optimal code path for that CPU. This is called a CPU dispatcher. However, the Intel CPU dispatcher does not only check which instruction set is supported by the CPU, it also checks the vendor ID string. If the vendor string is "GenuineIntel" then it uses the optimal code path. If the CPU is not from Intel then, in most cases, it will run the slowest possible version of the code, even if the CPU is fully compatible with a better version.

This vendor-specific CPU dispatching may potentially impact the performance of software built with an Intel compiler or an Intel function library on non-Intel processors, possibly without the programmerโ€™s knowledge. This has allegedly led to misleading benchmarks,cite-ref-agner-blog-14-1[14] including one incident when changing the CPUID of a VIA Nano significantly improved results.cite-ref-15[15] In November 2009, AMD and Intel reached a legal settlement over this and related issues,cite-ref-16[16] and in late 2010, AMD settled a US Federal Trade Commission antitrust investigation against Intel.cite-ref-17[17]

The FTC settlement included a disclosure provision where Intel must:cite-ref-daily-tech-18-0[18]

publish clearly that its compiler discriminates against non-Intel processors (such as AMD's designs), not fully utilizing their features and producing inferior code.

In compliance with this ruling, Intel added disclaimers to its compiler documentation:cite-ref-intel-optimization-notice-19-0[19]

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

As late as 2013, an article in The Register alleged that the object code produced by the Intel compiler for the AnTuTu Mobile Benchmark omitted portions of the benchmark which showed increased performance compared to ARM platforms.cite-ref-20[20]

Release history

The following lists versions of the Intel C++ Compiler since 1999:cite-ref-intel-c-compiler-release-notes-21-0[21]

| Compiler version | Release date |
|---|---|
| Intel C/C++ Compiler 4.0 | 1999 |
| Intel C/C++ Compiler 4.5 | 2000 |
| Intel C/C++ Compiler 5.0 | 2001 |
| Intel C/C++ Compiler 6.0 | 2002 |
| Intel C++ Compiler 7.0 | 2003 |
| Intel C++ Compiler 8.0 | December 15, 2003 |
| Intel C++ Compiler 8.1 | September 2004 |
| Intel C++ Compiler 9.0 | June 14, 2005 |
| Intel C++ Compiler 10.0 | June 5, 2007 |
| Intel C++ Compiler 10.1 | November 7, 2007 |
| Intel C++ Compiler 11.0 | November 2008 |
| Intel C++ Compiler 11.1 | June 23, 2009 |
| Intel C++ Composer XE 2011 up to Updateโ€ฆ | November 7, 2010 |
| Intel C++ Composer XE 2011 Update 6 andโ€ฆ | September 8, 2011 |
| Intel C++ Composer XE 2013 (compiler 13โ€ฆ | September 5, 2012 |
| Intel C++ Composer XE 2013 SP1 (compileโ€ฆ | September 4, 2013 |
| Intel C++ Composer XE 2013 SP1 Update 1โ€ฆ | October 18, 2013 |
| Intel C++ Compiler for Android (compileโ€ฆ | November 12, 2013 |
| Intel C++ Composer XE 2015 (compiler 15โ€ฆ | July 25, 2014 |
| Intel C++ Composer XE 2015 Update 1 (coโ€ฆ | October 30, 2014 |
| Intel C++ 16.0 | August 25, 2015 |
| Intel C++ 17.0 | September 15, 2016 |
| Intel C++ 18.0 | January 26, 2017 |
| Intel C++ 19.0 | April 3, 2018 |
| Intel C++ Compiler Classic 19.1 | October 22, 2020 |
| Intel oneAPI DPC++ / C++ Compiler 2021 | December 8, 2020 |
| Intel C++ Compiler Classic 2021.1.2 Intโ€ฆ | December 16, 2020 |
| Intel C++ Compiler Classic 2022.2.1 Intโ€ฆ | November 2, 2022 |
| Intel C++ Compiler Classic 2023.0 Intelโ€ฆ | Q1 2023 |

| Compiler version | Major new features |
|---|---|
| Intel C/C++ Compiler 4.0 | Support for Streaming SIMD, enhanced prโ€ฆ |
| Intel C/C++ Compiler 4.5 | Support for OpenMP, Itanium |
| Intel C/C++ Compiler 6.0 | Increased Linux support, Auto-paralleliโ€ฆ |
| Intel C++ Compiler 8.0 | Precompiled headers, code-coverage toolโ€ฆ |
| Intel C++ Compiler 8.1 | AMD64 architecture (for Linux). |
| Intel C++ Compiler 9.0 | AMD64 architecture (for Windows), softwโ€ฆ |
| Intel C++ Compiler 10.0 | Improved parallelizer and vectorizer, Sโ€ฆ |
| Intel C++ Compiler 10.1 | New OpenMP* compatibility runtime libraโ€ฆ |
| Intel C++ Compiler 11.0 | Initial C++11 support. VS2008 IDE integโ€ฆ |
| Intel C++ Compiler 11.1 | Support for latest Intel SSE SSE4.2 , Aโ€ฆ |
| Intel C++ Composer XE 2011 up to Updateโ€ฆ | Cilk Plus language extensions, Guided Aโ€ฆ |
| Intel C++ Composer XE 2011 Update 6 andโ€ฆ | Cilk Plus language extensions updated tโ€ฆ |
| Intel C++ Composer XE 2013 (compiler 13โ€ฆ | Linux-based support for Intel Xeon Phiโ€ฆ |
| Intel C++ Composer XE 2013 SP1 (compileโ€ฆ | Online installer; support for Intel Xeoโ€ฆ |
| Intel C++ Composer XE 2013 SP1 Update 1โ€ฆ | Japanese localization of 14.0; Windowsโ€ฆ |
| Intel C++ Compiler for Android (compileโ€ฆ | Hosted on Windows, Linux, or OS X, compโ€ฆ |
| Intel C++ Composer XE 2015 (compiler 15โ€ฆ | Full C++11 language support; Additionalโ€ฆ |
| Intel C++ Composer XE 2015 Update 1 (coโ€ฆ | AVX-512 support; Japanese localization |
| Intel C++ 16.0 | Suite-based availability (Intel Paralleโ€ฆ |
| Intel C++ 17.0 | Suite-based availability (Intel Paralleโ€ฆ |
| Intel C++ 18.0 | Suite-based availability (Intel Paralleโ€ฆ |
| Intel C++ 19.0 | Suite-based availability (Intel Paralleโ€ฆ |
| Intel C++ Compiler Classic 19.1 | Initial Open MP 5.1 CPU only |
| Intel oneAPI DPC++ / C++ Compiler 2021 | SYCL, DPC++, initial Open MP 5.1 |
| Intel C++ Compiler Classic 2021.1.2 Intโ€ฆ | oneAPI DPC++/C++ introduces support forโ€ฆ |
| Intel C++ Compiler Classic 2022.2.1 Intโ€ฆ | Support for latest Intel CPUs, GPUs, anโ€ฆ |
| Intel C++ Compiler Classic 2023.0 Intelโ€ฆ | Support for Intel Advanced Matrix Extenโ€ฆ |

See also
References

cite-note-11. citerefintel-corporation2022Intel Corporation (2022-11-02). "Intelยฎ oneAPI DPC++/C++ Compiler". software.intel.com. Intel. Retrieved 2024-10-11.
cite-note-22. citerefintel-corporation2022Intel Corporation (2022-11-02). "Intelยฎ C++ Compiler Classic". software.intel.com. Intel. Retrieved 2022-12-01.
cite-note-33. โ†‘ "DEPRECATION NOTICE: Intelยฎ C++ Compiler Classic". community.intel.com. 2022-09-01. Retrieved 2023-02-13.
cite-note-44. โ†‘ citerefintel2021Intel (2021). "Intel oneAPI DPC++/C++ Compiler". Intel.com. Intel. Retrieved 2021-02-09.
cite-note-intel-55. โ†‘ citerefintel-corporation2021Intel Corporation (2021). "Intelยฎ oneAPI DPC++/C++ Compiler". software.intel.com. Intel. Retrieved 2021-02-09.
cite-note-66. โ†‘ "Intel oneAPI DPC++ Compiler 2020-06 Released With New Features". www.phoronix.com. Retrieved 2020-12-17.
cite-note-77. โ†‘ citerefteam2019Team, Editorial (2019-12-16). "Heterogeneous Computing Programming: oneAPI and Data Parallel C++". insideBIGDATA. Retrieved 2020-12-17.
cite-note-88. โ†‘ "Khronos Steps Towards Widespread Deployment of SYCL with Release of SYCL 2020 Provisional Specification". The Khronos Group. 2020-06-30. Retrieved 2020-12-17.
cite-note-99. โ†‘ "Intel C/C++ compilers complete adoption of LLVM". Intel. Retrieved 2021-08-17.
cite-note-intel-1010. โ†‘ citerefintel-corporation2022Intel Corporation (November 30, 2022). "Intel oneAPI 2023 Release: Preview the Tools". www.intel.com. Intel. Retrieved 2022-12-01.
cite-note-1111. โ†‘ citerefintel-corporation2020Intel Corporation (2020-12-16). "Intelยฎ oneAPI DPC++/C++ Compiler". software.intel.com. Intel. Retrieved 2021-02-09.
cite-note-1212. โ†‘ citerefintel-corporation2020Intel Corporation (2020-12-16). "Intelยฎ C++ Compiler Classic". software.intel.com. Intel. Retrieved 2021-02-09.
cite-note-1313. โ†‘ "Your Processor, Your Compiler, and You: The Case of the Secret CPUID String". Archived from the original on 2012-01-05. Retrieved 2011-12-11.
cite-note-agner-blog-1414. โ†‘ "Intel's "cripple AMD" function". www.agner.org.
cite-note-1515. โ†‘ citerefhruska2008Hruska, Joel (29 July 2008). "Low-end grudge match: Nano vs. Atom". Ars Technica.
cite-note-1616. โ†‘ "Settlement agreement" (PDF). download.intel.com. Archived from the original (PDF) on 2017-02-22.
cite-note-1717. โ†‘ "Intel and U.S. Federal Trade Commission Reach Tentative Settlement". Newsroom.intel.com. 2010-08-04. Retrieved 2012-10-13.
cite-note-daily-tech-1818. โ†‘ "FTC, Intel Reach Settlement; Intel Banned From Anticompetitive Practices". Archived from the original on 2012-02-03. Retrieved 2011-10-20.
cite-note-intel-optimization-notice-1919. โ†‘ "Optimization Notice". Intel Corporation. Retrieved 11 December 2013.
cite-note-2020. โ†‘ "Analyst: Tests showing Intel smartphones beating ARM were rigged". The Register.
cite-note-intel-c-compiler-release-notes-2121. โ†‘ "Intelยฎ C++ Compiler Release Notes and New Features". Intel Corporation. Retrieved 27 April 2021.
cite-note-intel-c-c-compiler-home-page-223. ""Intel(R) C++ and Fortran Compilers Home Page"". Archived from the original on 1999-10-04. Retrieved 2024-03-08.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
cite-note-intel-r-c-c-compiler-revision-history-234. ""Intel(R) C/C++ Compiler Revision History"". Archived from the original on 2000-08-16. Retrieved 2024-03-08.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
cite-note-intel-r-c-and-fortran-compilers-home-page-245. ""Intel(R) C++ and Fortran Compilers Home Page"". Archived from the original on 2001-10-19. Retrieved 2024-03-08.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
cite-note-intel-r-c-compiler-for-linux-256. ""Intel(R) C++ Compiler for Linux"". Archived from the original on 2002-10-03. Retrieved 2024-03-08.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
cite-note-intel-software-development-products-267. ""Intel Software Development Products"". Archived from the original on 2003-02-01. Retrieved 2024-03-08.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
cite-note-278. This note is attached to the release in which Cilk Plus was introduced. This URL points to current documentation: http://software.intel.com/en-us/intel-composer-xe/
cite-note-289. Intel C++ Composer XE 2013 Release Notes[1] http://software.intel.com/en-us/articles/intel-c-composer-xe-2013-release-notes/

External links

โ€ข Intel oneAPI DPC++/C++ Compiler
โ€ข Single Component Downloads and Runtime Versions
โ€ข Intel oneAPI Toolkits
โ€ข Intel Software Technical Documentation site